home *** CD-ROM | disk | FTP | other *** search
/ MacWorld: Complete Mac Interactive / Macworld Complete Mac Interactive CD)(1994).iso / Software / More Shareware⁄Freeware / NIH Image 1.55 f (non fpu) / Release Notes < prev   
Text File  |  1994-05-03  |  25KB  |  316 lines

  1. V1.55 Release Notes (3 May 1994)
  2. -------------------------------------------
  3.  
  4. 1) The PasteLive macro command now works with Paste Control.
  5.  
  6. 2) The Find command will now move the cursor to a specified line in a text window if you enter a search string in the form ‘#n’, where n in a line number. As an example, to go to line 100, enter ‘#100’.
  7.  
  8. 3) Load Macros error messages now display the line in the macro file that caused the error.
  9.  
  10. 4) Routines were added to the macro language for getting the length of a string and for deleting a substring of specified length. The length function (“i:=Length(str)”) returns the length of str. The delete procedure ( “Delete(str,index,count)”) removes count characters from str, beginning at index.
  11.  
  12. 5) A bug (introduced in v1.54) was fixed that could sometimes cause images uncalibrated in the Set Scale dialog box and saved to revert to being calibrated (to pixels) when reopened.
  13.  
  14. 6) A bug was fixed that caused the macro interpreter to fail to skip over string assignments used in IF or IF THEN ELSE statements.
  15.  
  16. 7) The LUT tool now moves one level wide density slices if you click directly on them in the LUT window.
  17.  
  18. 8) A bug was fixed that sometimes caused Plot Profile and Reslice to not work correctly for line selections extending past the image boundary.
  19.  
  20. 9) A new macro command was added that returns the current spatial scale. It has the form “GetScale(scale,unit)”, where scale (real) is the number of pixels per unit and unit (a string variable) is the measurement unit. For uncalibrated images, scale is set to 1 and unit to ‘pixel’.
  21.  
  22. 10) There is now a macro command (“AutoOutline(x,y)”) that is equivalent to clicking with the wand tool at location (x,y). The outline was successfully created if GetRoi returns a width greater than zero.
  23.  
  24. 11) The Dither command no longer ignores pixels along the edge of the image.
  25.  
  26. 12) The SaveAs and Export macro commands now accept full path names. For example, to save the current image in the folder “Images” on the disk named “hd400” use SaveAs(‘hd400:images:myimage’).    
  27.  
  28. 13) A bug was fixed that caused all the slices except the first to be inverted when importing multi-slice 16-bit images.
  29.  
  30. 14) The Open command now recognizes and opens imported TIFF files of type ‘TEXT’. Hold down the option key to display the first 32K of the file as ASCII text.
  31.  
  32. 15) The Cancel button in the Rotate Left and Rotate Right dialog box now works.
  33.  
  34. 16) A bug was fixed that caused the “24-bit to 8-bit Color” command to fail with images wider than 2047 pixels.
  35.  
  36. 17) NIH Image now works on grayscale Powerbooks. In fact, it runs with the monitor set to anything from “Black & White” to “Millions”. For best performance, however, 256 colors (or grays) should be used whenever possible.
  37.  
  38. 18) The Save Screen command was removed from the File Menu. Use System 7’s built-in screen dump FKEY (command-shift-3) instead.
  39.  
  40. 19) A bug was fixed that sometimes caused calibrated density values to be incorrect for images opened and processed using a macro.
  41.  
  42. 20) A bug was fixed that sometimes caused “Plug-in Digitizer”, and possibly other acquisition plug-ins, to generate blank images when memory was low.
  43.  
  44. 21) A bug was fixed that sometimes caused enlarged and misplaced text to be displayed in the Image Math dialog box.
  45.  
  46. 22) A new command (Register) was added to the Stacks menu that will translate and rotate the slices in a stack into alignment based on fiducial points. It was written by Michael Castle (mike.castle@med.umich.edu) of the University of Michigan Mental Health Research Institute (MHRI). Documentation, along with an example stack, is included with V1.55 in the "Image Registration" folder.
  47.  
  48. 23) The Scale and Rotate command now rotates images up to ten times faster.
  49.  
  50. 24) The "Values" window was renamed "Info".
  51.  
  52. 25) The maximum stack size was increased from 256 to 1000 slices.
  53.  
  54. 26) A new option was added to the Surface Plot command to create grayscale or color 3D surface plots similar to the default "wireframe" plots except that the active color LUT is applied to the z-axis of the plot.  The code for doing this was contributed by Norbert Vischer (norbert@mc.bio.uva.nl).
  55.  
  56. 27) A bug was fixed that could a crash when attempting to open a window and not enough memory was available. Crashes were most likely to occur when using the "Modern Memory Manager" available on PowerPC Macs.
  57.  
  58. 28) A bug was fixed that sometimes caused stacks to be partially opened without an error message being displayed.
  59.  
  60.  
  61. V1.54 (1 Feb 1994)
  62.  
  63. 1) A bug was fixed that could cause the Import macro command to fail when using the “Import All” mode if Import had been previously called in the macro.
  64.  
  65. 2) The Set Scale command now allows the user to enter an arbitrary unit of measurement.
  66.  
  67. 3) A plug-in (“Plug-in Digitizer”), written by Cyrus Daboo of Cambridge University, now allows NIH Image to grab images using the frame grabber built into the AV Macs or from any other Quicktime compatible digitiser with a 'vdig' component. It is available as a binhexed. self-extracting archive by anonymous FTP from zippy.nimh.nih.gov, in the /pub/nih-image/plug-ins directory. The archive also includes a report on the AV digitizer that points out some its flaws, such as automatic gain control that can't be disabled. It also includes Apple's “AV Digitizer Options” extension that allows the user to switch the AV digitizer into grayscale mode, which greatly improves the quality of images captured using grayscale cameras. 
  68.  
  69. 4) A bug (new in V1.53) was fixed that caused perimeter and freehand length measurements to be incorrect for spatially calibrated images.
  70.  
  71.  
  72. V1.53
  73.  
  74. 1) A command (Project) was added to the macro language for doing projections. The Project dialog box is displayed only one time (the first time Project is called) within a macro.
  75.  
  76. 2) A string function (WindowTitle) that returns the title of the active window was added to the macro language.
  77.  
  78. 3) A bug was fixed that caused Image to display an invalid error message when attempting to open 16-bit TIFF files with contiguous strips.
  79.  
  80. 4) A bug was fixed that could sometimes cause Image to crash when printing, particularly when using a macro.
  81.  
  82. 5) A bug was fixed that caused Image to fail to open some TIFF files created by “little-endian” systems such as the IBM PC.
  83.  
  84. 6) A bug was fixed that caused the Reslice command to fail when the slice spacing was less than one.
  85.  
  86. 7) The NewTextWindow macro command now accepts optional arguments for specifying the text window size and the Dispose macro command now works with text windows. These changes make it easy to write macros that do inline convolutions,  for example,
  87.  
  88.   macro 'Sharpen [F]';
  89.   begin
  90.      NewTextWindow('3x3 sharpen',120,120);
  91.      writeln('-1 -1 -1');
  92.      writeln('-1  9 -1');
  93.      writeln('-1 -1 -1');
  94.      Convolve('');
  95.      Dispose;
  96.   end;
  97.  
  98. 8) A bug was fixed that caused the Plot Profile command to work incorrectly when using a line selection transferred to another image using the Restore Selection command.
  99.  
  100. 9) A bug was fixed that sometimes caused Image to hang when using the wand tool with black backgrounds.
  101.  
  102. 10) The Preferences command can now be used to specify the four character creator code Image uses for exported text files. This code determines which application is launched when you double-click on an exported text file (e.g., measurements, profile plot data, XY coordinates). Use ‘Imag’ for Image, ‘XCEL’ for Excel and ‘QKPT’ for KaleidaGraph.
  103.  
  104. 11) A new command named “Image Math” was added to the Enhance menu for performing arithmetic and logical operations between two images. The corresponding macro command has the form “ImageMath(‘op’, pic1, pic2, scale, offset, ’ Result’)”. The ‘op’ string should be set to ‘add’, ‘sub’, ‘mul’, ‘div’, ‘and’, ‘or’, ‘xor’, ‘min’, ‘max’ or ‘copy’. Pic1 and pic2 are pic numbers or pid numbers. For each pixel in the selection, the specified operation is performed, the result is multiplied by ‘scale’ and then ‘offset’ is added.   ‘Result’ is the name used for the window created to store the results. For example, to average two images you could use the command: ImageMath(‘add’, 1, 2, 0.5, 0, ‘Average’).
  105.  
  106. 12) When using acquisition plug-ins, Image now uses the window name specified by the plug-in instead of always using ‘Untitled’.
  107.  
  108. 13) A bug was fixed that caused the Results window to sometimes not be correctly updated when using overlapping windows.
  109.  
  110. 14) The MoveWindow macro command now works with text windows.
  111.  
  112. 15) The SetThresold and AutoThresold macro command no longer cause the LUT tool to be selected.
  113.  
  114. 16) Image now displays the PrintDialog box when images are selected and printed using the Finder’s Print command.
  115.  
  116. 17) The macro interpreter is now more likely to correctly handle nested IF, FOR, WHILE and REPEAT statements without the need to use BEGIN-END brackets. The interpreter also now requires semicolons between statements.
  117.  
  118. 18) A bug was fixed that caused plug-ins with ‘(‘, ‘/’ or ‘;’ in their names to not be listed correctly in the appropriate plug-in submenu.
  119.  
  120. 19) A new command (PasteLive) was added to the macro language that does a “Live” paste into a selection in a window other than the Camera window. This new command is useful for making montages of different focal planes of fluorescent specimens. Use the “Paste Averaged” macro command in “Video” to do frame averaging of the selection.
  121.  
  122. 20) Image now does a 3-point running average of the XY coordinates to more accurately estimate perimeters of freehand selections and lengths of freehand line selections. Measured freehand perimeters and lengths are now about 10% lower than before. Perimeters reported by Analyze Particles and the wand tool are now slightly lower (2-3%) than those reported by previous versions of Image since they are calculated using this new smoothing routine.
  123.  
  124. 21) A bug was fixed that caused text in text windows to be displayed larger than expected.
  125.  
  126. 22) The Average Frames command now allows you to specify the min and max values that control how integrated images are linearly scaled from 16-bits to 8-bits. The actual 16-bit min and max are always displayed in the Values menu. There is also a new option that creates a calibration function for displaying approximations of the integrated 16-bit values.
  127.  
  128. 23) A Boolean function (PidExists) was added to the macro language for testing the validity of PidNumbers.
  129.  
  130. 24) The “Invert LUT”, “Set Number of Colors” and “Set  Extra Colors” commands in the Options menu were combined into a single command called “Lut Options...”.
  131.  
  132. 25) The Analyze Particles command now displays a dialog box with particle analysis options that were previously in the Options dialog box. You can bypass this dialog box by holding down the option key or by using the AnalyzeParticles macro command.
  133.  
  134. 26) A bug was fixed that could cause profile plots of rectangular selections in density calibrated images to be incorrect.
  135.  
  136. 27) A command was added to the macro language for making profile plot data available to macro routines. It has the form “GetPlotData(count,ppv,min,max)”, where count is the number of values, ppv is the number of pixels averaged for each value, and min and max are the minimum and maximum values. The plot data values are returned in a built-in real array named PlotData, which uses indexes in the range 0-4095. The macro “Plot Profile” in “Plotting Macros” illustrates how to use GetPlotData and PlotData.
  137.  
  138. 28) The Gel Plotting macros now work with vertical lanes, no longer require all other windows be closed, do a better job of scaling the lane plots, and report results in calibrated units such as integrated OD.
  139.  
  140. 29) The SaveAs macro command will now save the contents of text windows.
  141.  
  142. 30) The Save, SaveAs, Close and Dispose macro commands no longer require an image be open to work with text windows.
  143.  
  144. 31) The Close macro command now works with the Plot, Histogram, Results, and Video Control windows.
  145.  
  146. 32) The “Import FITS” macro in “Input/Output Macros” now imports both 8 and 16-bit FITS images. It also correctly handles FITS files with headers longer than 36 lines. There is also a new macro for displaying FITS headers.
  147.  
  148. 33) A new string search function was added to the macro language. It has the form “index:=pos(substr,str)”. It searches for ‘substr’ within ‘str’ and returns an integer that is the index of the first character of substr within str, or zero if ‘substr’ is not found.
  149.  
  150. 34) Area and line selection can now be created  more precisely on magnified images.
  151.  
  152. V1.52 (9 September 1993)
  153.  
  154. 1) A bug was fixed that could cause Image to crash when opening text files with names containing a semicolon.
  155.  
  156. 2) A bug was fixed that caused plug-in filters to not work correctly with rectangular selections.
  157.  
  158. 3) Images are now marked as changed when you use a plug-in filter.
  159.  
  160. 4) A bug was fixed that would sometimes cause the Windows menu to become messed up when one or more text windows were open.
  161.  
  162. 5) The window title bar is now correctly updated after a TIFF file has been saved using a new name.
  163.  
  164. 6) The Reduce Noise filter is now four times faster due to some in-line 68000 code contributed by Edward J. Huff at the NYU Chemistry Department.
  165.  
  166. 7) A bug was fixed that prevented filter plug-ins from remembering their settings between calls. You can now also pass the string ‘Reset’ to the Filter macro routine (e.g., Filter(‘Reset’)) to force the next filter called to use its default settings and to display its dialog box, if any.
  167.  
  168. 8) A macro (“Make Expression Movie” in the file “Animation”) was written for generating movies using the Expression plug-in filter. Expression is a freeware program written by Jim Bumgardner (jbum@aol.com) that creates images that change over time according to a mathematical formula. Expression 3.0b, available in the plug-ins directory on zippy.nimh.nih.gov, is required for use with NIH Image.
  169.  
  170. 9) A bug was fixed that prevented selection of the right column or  bottom row when using the rectangle selection tool.
  171.  
  172. 10) Thanks to Edward J. Huff, text files created by NIH Image (e.g., macros and convolution kernels) now have a custom icon.
  173.  
  174. 11 A command (SortPalette) that sorts the current look-up table by hue was added to the macro language.
  175.  
  176. 12) PidNumber, a new macro function, was added to the macro language. It returns a negative permanent ID number for the current image.  SelectPic and ChoosePic were modified to accept these negative values and find the current picNumber automatically if presented with a pid value rather than a picNumber value. A macro package (“PidNumbers Demo”) demonstrates the various ways that images can be selected in the macro language. The PidNumber modifications and demo macros were contributed by Edward J. Huff.
  177.  
  178. 13) The line spacing in text windows is now changed when the font size is changed.
  179.  
  180. 14) Text windows now handle update events correctly.
  181.  
  182. 15) Plug-ins in the system folder in a folder named Plug-ins are now found if image is on a different volume than the the system folder.
  183.  
  184. 16) The standard versions of NIH Image no longer requires a floating-point coprocessor (FPU). This change was made because there is no noticible performance difference between the FPU and non-FPU version of Image and becuase the LCIII and Centris 610, the most popular new Macs, do not have FPUs. This change also anticipates PowerPC based Macs which will not support emulation of 68000 programs that directly use the FPU.
  185.  
  186.  
  187. V1.51 (2 August 1993)
  188.  
  189. 1) A bug (introduced in 1.50) was fixed that prevented histogram and plot values from being pasted into spreadsheet programs and other programs that work with text on the Clipboard.
  190.  
  191.  
  192. V1.50 (29 July 1993)
  193.  
  194. 1) A new submenu (Acquire) was added to the File menu for using Photoshop compatible acquisition plug-ins. The plug-ins must be stored in a folder named “Plug-ins” located either in the same folder as Image or in the System Folder.  Using plug-ins, Image can acquire 8-bit grayscale, 8-bit indexed color, and 24-bit color images. 24-bit color images are stored in three slice stacks and displayed using 8-bit indexed color, similar to the way the Capture
  195. Color command works.
  196.  
  197. The following plug-ins have been reported to work:
  198.  
  199. Agfa Arcus Scanner
  200. Agfa PhotoScan 
  201. Computer Eyes /RT Pro
  202. Datacopy 730GS scanner
  203.     Ektron 1400 series camera (Eikonix 4096x4096 CCD)
  204. Gaphics Unlimited Kingfisher frame grabber (grayscale only)
  205. Howtek II slide scanner
  206. LaCie SilverScanner (8-bit grayscale, 8-bit color, 24-bit color)
  207. Kodak DCS-200 digital camera (grayscale and 24-bit color)
  208. Kodak Photo CD Image Browser
  209. Kodak RFS2035 scanner
  210. Microtek Scanmaker
  211. MirrorScan 600 Plus
  212. Neotech Image Grabber
  213. Perceptics PixelBuffer frame grabber
  214. Perceptics MegaGrabber frame grabber
  215. Perceptics PixelHR-24 frame grabber
  216. Plug-in Digitizer (supports AV Macs and other QuickTime digitizers)
  217. QuickImage 24 plug-in
  218. Radius VideoVision video grabber
  219. RasterOps Video Capture V1.3 with 24XLTV card
  220. Scantastic plug-in with Apple Color One scanner
  221. Scion LG-3 frame grabber
  222. Truvel scanner
  223. Voyager decompression plug-in
  224.  
  225. The LaCie Silver scanner plug-in seems to be the fastest, smoothest and most reliable of the scanner plug-ins tested. 
  226.  
  227. A command was also added to the macro language for supporting acquisition plug-ins. It has the form Acquire('plug-in name'). Plug-ins are assumed to reside in a folder named “Plug-ins” located in the same folder as Image or in the System Folder. Full path names such as 'HD400:Plug-ins:Kodak DCS-200' are also supported.
  228.  
  229. The plug-in support in NIH Image is based on code written by Greg Brown, Steven Gonzalo and Richard Ohlendorf of Ohlendorf Research, Inc. Ohlendorf Research has customized both Image and the Kodak DCS-100 digital camera plug-in to automate uploading of images from the camera.
  230.  
  231. Ohlendorf Research, Inc.
  232. 818 LaSalle Street
  233. Ottawa, IL 61350
  234. 815-434-5622
  235. Applelink--Abraham@AppleLink.com
  236.  
  237.  
  238. 2) Several problems with commands in the Binary submenu were fixed. These problems occurred when processing objects along the edge of the image. A related problem was fixed that sometimes caused the Skeletonize routine to never complete.
  239.  
  240. 3) A function (UndoBufferSize) was added to the macro language that returns the current size of the Undo and Clipboard buffers. The Gel Plotting Macros use this function to display an error message when the Plots window needs to be larger than the current buffer size.
  241.  
  242. 4) The Import command can now import 3D data sets such as multi-slice files from medical scanners. An optional fourth argument was also added to the SetCustom macro command to allow the number of slices to be specified. For example, when importing a data set with 128 256x256 slices and no header, use “SetCustom(256,256,0,128)”.
  243.  
  244. 5) If opened by the OpenSerial macro command, the serial I/O port is now closed when you quit image.
  245.  
  246. 6) A four element built-in array (Scion) was added to the macro language to allow access to the Scion LG-3's I/O registers. The four elements of the array are defined as follows:
  247.  
  248. Scion[1]      8-bit DAC(A)              read/write
  249. Scion[2]      8-bit DAC(B)              read/write
  250. Scion[3]      8-bit Control Reg 1    read only
  251. Scion[4]      4 digital out bits       read/write
  252.  
  253. Macros for setting and reading the LG-3 I/O registers are available in the file “Video”.
  254.  
  255. 7) Support was added for the external trigger feature of the Scion LG-3.
  256.  
  257. 8) A new submenu (Filter) was added to the Enhance menu for using Photoshop compatible filter plug-ins. The plug-ins must be stored in a folder named “Plug-ins” located either in the same folder as Image or in the System Folder. A command was also added to the macro language for using filter plug-ins. It has the form Filter('plug-in name'). Plug-ins are assumed to reside in the aforementioned Plug-ins folder.
  258.  
  259. 9) A command was added to the macro language for enabling and disabling “Photo Mode”. The command “PhotoMode(true)” erases the screen and draws the contents of the currently active window. “PhotoMode(false)” restores the screen.
  260.  
  261. 10) A bug (introduced in V1.49) in the macro interpreter was fixed that caused it to fail if the first argument in a procedure call started with a minus sign or a left parenthesis (e.g., “(a+b)/c”). This bug also affected macro commands, such as PutMessage, PutSerial and Write, that accept a variable number of arguments.
  262.  
  263. 11)  When using the “Highlight Saturated Pixels” option, the color used to display under saturated pixels is now yellow instead of blue.
  264.  
  265. 12) Image can now open and edit text files up to 32K in size. The following commands know how to deal with text windows: New, Open, Close, Save, Save As, Print, Cut, Copy, Paste, Clear, Font, Size, Load Macros (loads the macros contained in the current text window).
  266.  
  267. 13) Images larger than printer page (normally 552 x 730 pixels) are now scaled to fit the page. This feature is only available when “Custom Grayscale Halftoning” is disabled.
  268.  
  269. 14) A command (SurfacePlot) was added to the macro language for generating surface plots. A macro for generating a surface plot movie from a stack is in the macro file “Stacks2”.
  270.  
  271. 15) A macro command was added for doing 24-bit to 8-bit color conversion. It has the form “RGBToIndexed(str)”, where str contains some combination of 'System LUT', 'Existing LUT, 'Custom LUT' and 'Dither'. Custom LUT and Dither are the defaults. The macro file “Color” contains a macro for doing a color merge of two stacks.
  272.  
  273. 16) 16-bit TIFF files can now be imported. After the file has been imported, use the Rescale (aka Revert to Saved) command to find the optimum 16-bit to 8-bit mapping. Files that represent white as zero open inverted.
  274.  
  275. 17) The AverageFrames macro command now optionally accepts two arguments. The first is a string containing some combination of 'Average', 'Integrate' and 'Video Rate Capture', and the second is the number of frames to average or integrate. For example, to integrate 128 frames, you would use the command AverageFrames('Integrate',128).
  276.  
  277. 18) A bug was fixed that caused the X and Y coordinates of the center of the best fitting ellipse (X-Y Center) to always be integers.
  278.  
  279. 19) A bug was fixed that caused the creation of freehand or segmented line selections to fail if density slicing was enabled.
  280.  
  281. 20) A bug was fixed that caused a pasted image in a second window to disappear when using the Start Capturing command.
  282.  
  283. 21) A bug was fixed that could sometimes cause the tools in the Tool window to be displayed incorrectly.
  284.  
  285. 22) A command (“SelectWindow('Title')”) was added to the macro language for selecting windows my name.
  286.  
  287. 23) A command (“NewTextWindow('Title')”) was added to the macro language for opening a new text window. In addition, the Writeln macro routine was updated so that it now displays text in the currently active text window.
  288.  
  289. 24) A command (CaptureColor) was added to the macro language for capturing 24-bit color images into a three slice stack.
  290.  
  291. 25) A command (“GetThresholds(lower,upper)”) was added to the macro language for obtaining the current lower and upper thresholds. In density slicing mode, it returns the lower and upper thresholds. In thresholding mode, lower is the current threshold and upper is set to 255. Both lower and upper are set to zero if neither thresholding or density slicing are enabled. A new macro named “Compute Percent Foreground” in the file “Measurements” uses GetThreshold to compute the percentage of the current selection that has been highlighted by thresholding.
  292.  
  293. 26) A Find command was added to the Edit menu. It replaces Fill whenever a text window is active. Type Option-Command-F to repeatedly search for the same string.
  294.  
  295. 27) A command (AverageSlices) was added to the macro language to provide access to the Average command in the Stacks Menu..
  296.  
  297. 28) A new submenu (Export) was added to the File menu for using Photoshop compatible export plug-ins. Two plug-ins were successfully tested: a plug-in that supports the Scion TV-3 video output card (used to drive video printers) and the PhaserPrint plug-in for the Tektronix Phaser IIsd dye sublimation printer.
  298.  
  299. 29) Two new macro functions were added to the macro language for doing logical operations on bits. BitAnd(n1,n2) returns n1 AND n2. BitOr(n1,n2) returns n1 OR n2.
  300.  
  301. 30) The Propagate LUT command now copies the “fill” colors needed when using the LUT tool or controls in the Map window to adjust pseudo-color LUTs.
  302.  
  303. 31) The Change Colors command was replaced with a new command named Fix Colors that maps pixels with values of either 0 or 255 to the nearest matching color in the other 254  LUT entries. This usually corrects pseudo-color problems due to the way Image “hard wires” entries 0 and 255 to white and black respectively.
  304.  
  305. 32) The About Box was redesigned.
  306.  
  307. 33) The Surface Plot command now displays a dialog box that allows the user to specify the name and dimension of the plot window.
  308.  
  309. 34) A bug was fixed in the Close and Dispose macro commands that could sometimes cause images with selections to become corrupted. 
  310.  
  311. 35) Balloon help was added to the menus lacking help messages and to most dialog boxes.
  312.  
  313.  
  314.  
  315.  
  316.